# Date： 2023/2/20 10:50

# 什么是集合
    # Python 语言蹄冻的内置数据结构
    # 与列表、字典一样，都属于可变类型的序列
    # 集合没有 value 的字典


# 集合的创建
s={'Hello', 'Python', 98}
s1=set(range(6))
print(s1)
print(set([3,5,8,9,7,4,1]))
print(set((33,99,88,77,44,11,23,77,88)))
print(set('Python'))
print(set({99,88,77,44,55,6,66,22}))
print(set())

sss={10,20,30,40,50,60}
# 集合元素的判断操作    in 或 not in
print(10 in sss)
print(100 in sss)
print(10 not in sss)
print(90 not in sss)

# 集合的增删改查操作
    # 调用 add() 方法，一次添加一个元素
    # 调用 update() 方法，至少添加一个元素
    # 调用 remove() 方法，一次删除一个指定元素，如果指定的元素不存在抛出 KeyError
    # 调用 discard() 方法，一次删除一个指定的元素，如果指定的元素不存在不抛出异常
    # 调用 pop() 方法，一次只删除一个任意元素
    # 调用 clear()，清空集合
sss.add(100)
print(sss)

# sss.add({2000,3000,4000,5200})
# print(sss)

sss.update({200,300,400,520})
print(sss)

sss.remove(100)
print(sss)

sss.discard(100)
print(sss)

# 集合之间的关系
# 两个集合是否相等：     可以使用运算符 == 或 != 进行判断
# 一个集合是否是另一个集合的子集：      可以调用 issubset 进行判断 B 是 A 的子集
# 一个集合是否是另一个集合的超集：      可以调用方法 issupperset 进行判断 A 是 B 的超集
# 两个集合是否没有交集：              可以调用方法 isdisjoint 进行判断
x1={10,20,30,40,50,60}
x2={100,200,300,400,500,600}
print(x1==x2)
print(x1!=x2)


print("---------------------------------------")
# 一个集合是否是另一个集合的子集：      可以调用 issubse 进行判断 B 是 A 的子集
# 一个集合是否是另一个集合的超集：      可以调用方法 issupperset 进行判断 A 是 B 的超集
# 两个集合是否没有交集：              可以调用方法 isdisjoint 进行判断
z1={10,20,30,40,50}
z2={10,40,50}
z3={10,40,50,80}
z4={81,82,83,84,85,86,87,88}
print(z1.issubset(z2))
print(z1.issuperset(z2))
print(z1.isdisjoint(z2))
print(z3.isdisjoint(z1))
print(z1.isdisjoint(z3))
print(z1.isdisjoint(z4))        # z1 和 z4 是否  没有交集



